<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 * --------------------------------------------------------------------------
 * BLOG MODEL
 * --------------------------------------------------------------------------
 * Haberler, duyurular vs gibi içerikler veritabanında blog tablosonda tutulur.
 * bu içerikleri admin tarafı CRUD işlemlerini bu model dosyası yürütür.
 * 
 * @author  Ali OYGUR <alioygur@gmail.com>
 * @package blog
 */
class Blog_model extends MY_Model {

    /**
     * Bu olayla alakalı veritabanı isim(ler) bu değişkende tutulur.
     *
     * @var string | array
     * */
    private $_table = array('blog', 'blog_category', 'blog_to_category');

    public function __construct() {
        parent::__construct();
    }

    public function add($data = array()) {

        // insert main data
        $blog_id = $this->db->insert($this->_table[0], $data['main']) ? $this->db->insert_id() : FALSE;

        // insert categories
        $categories = array();
        foreach ($data['categories'] as $category_id) {
            $categories[] = array('blog_id' => $blog_id, 'category_id' => $category_id);
        }

        $this->db->insert_batch($this->_table[2], $categories);
    }

    public function get($id) {

        $q = $this->db->get_where($this->_table[0], array('id' => $id), 1);

        if (!$q->num_rows())
            return FALSE;

        return $q->row();
    }

    public function gets($options = array(), $limit = 0, $offset = 0) {

        $this->db
                ->select("SQL_CALC_FOUND_ROWS t1.*", FALSE)
                ->from($this->_table[0] . ' AS t1')
                ->order_by('t1.order', 'desc');

        // WHERE
        // By category_id
        if (isset($options['category_id']) && $options['category_id'] != 'all') {
            $this->db
                ->join($this->_table[2] . ' AS t2', 't1.id = t2.blog_id', 'left')
                ->where('t2.category_id', $options['category_id']);
        }
        
        // By status
        if (isset($options['status']))
            $this->db->where('t1.status', $options['status']);

        // LIMIT
        if ($limit > 0) {
            $this->db->limit($limit, $offset);
        }

        $q = $this->db->get();

        if (!$q->num_rows()) {
            return array('rows' => false, 'total_rows' => 0);
        }

        $data = array(
            'rows' => $q->result(),
            'total_rows' => $this->total_rows()
        );

        return $data;
    }

    public function edit($data = array(), $id) {

        // update main data
        $this->db->update($this->_table[0], $data['main'], array('id' => $id));
        
        // delete old categories and add new categories
        $this->db->delete($this->_table[2], array('blog_id' => $id));

        $categories = array();
        foreach ($data['categories'] as $category_id) {
            $categories[] = array('blog_id' => $id, 'category_id' => $category_id);
        }

        $this->db->insert_batch($this->_table[2], $categories);
    }

    public function delete($id) {
    	
        $sql = "DELETE t1, t2
                FROM {$this->db->dbprefix($this->_table[0])} AS t1
                LEFT JOIN {$this->db->dbprefix($this->_table[2])} AS t2 ON t1.id = t2.blog_id
                WHERE t1.id = '{$id}'";
        $this->db->query($sql);
    }
    
    /**
     * İçeriğe ait kategorileri döndürür
     * 
     * @param int $id kategorileri döndürülecek olan içeriğin ID si
     * @return array
     */
    public function get_categories($id) {
        
        $categories = array();

        $q = $this->db
                ->select('category_id')
                ->get_where($this->_table[2], array('blog_id' => $id));

        if ($q->num_rows()) {
            foreach ($q->result() as $row) {
                $categories[] = $row->category_id;
            }
        }

        return $categories;        
    }

    /**
     * ----------------------------------------------------------------------
     * HELPERS
     * ----------------------------------------------------------------------
     */
}

/* End of file blog_model.php */